<?php

// 授权
function menuAuth($vars){
    $menuAuthdb = new \app\erp\model\MenuAuthdb();
    $get_menu = $menuAuthdb->where('vars',$vars)->value('member_ids');
    if($get_menu){
        $temp = explode(',',$get_menu);
        if(in_array(MEMBER_ID,$temp)){
            return true;
        } else {
            return false;
        }
    } else {
        return false;
    }
}

//获取站点配置
function getSiteConfig($name)
{
    return \think\Db::name('site_config')->where('config_name', $name)->value('config_value');
}

// 发送邮件
function sendEmail($to_mail, $title, $body)
{
    $mailConfig = config('email');
    $mail = new PHPMailer\PHPMailer\PHPMailer();
    try {
        $mail_index = array_rand($mailConfig['FROM_MAIL']);
        $from_mail = $mailConfig['FROM_MAIL'][$mail_index];
        $from_password = $mailConfig['FROM_PASSWORD'][$mail_index];

        $mail->IsSMTP(); // 使用SMTP发送邮件
        $mail->CharSet = 'UTF-8';
        $mail->SMTPAuth = $mailConfig['SMTP_AUTH']; // 是否启用SMTP认证
        $mail->SMTPSecure = $mailConfig['SMTP_ENCRYPT']; // SMTP加密方式
        $mail->Host = $mailConfig['SMTP_SERVER']; // SMTP服务器地址
        $mail->Port = $mailConfig['SMTP_PORT']; // SMTP服务器端口
        $mail->Username = $from_mail; // SMTP用户名（有些服务器需要填写）
        $mail->Password = $from_password; // SMTP密码（有些服务器需要填写）
        $mail->SetFrom($from_mail, $mailConfig['FROM_NAME']); // 设置发件人信息
        $mail->Subject = $title; // 设置邮件主题
        $mail->Body = $body; // 设置邮件正文内容
        $mail->AltBody = $body; // 设置邮件正文内容（备用）
        $toEmail = $to_mail; // 收件人邮箱地址
        $toName = ' '; // 收件人姓名（可选）
        $mail->AddAddress($toEmail, $toName); // 添加收件人信息
        $mail->Send(); // 发送邮件
        return 'success';
    } catch (\PHPMailer\PHPMailer\Exception $e) {
        return $mail->ErrorInfo;
    }
}

function object_to_array($obj)
{
    $obj = ( array )$obj;
    foreach ($obj as $k => $v) {
        if (gettype($v) == 'resource') {
            return;
        }
        if (gettype($v) == 'object' || gettype($v) == 'array') {
            $obj [$k] = ( array )object_to_array($v);
        }
    }

    return $obj;
}

// PHP stdClass Object转array
function object_array($array)
{
    if (is_object($array)) {
        $array = ( array )$array;
    }
    if (is_array($array)) {
        foreach ($array as $key => $value) {
            $array [$key] = object_array($value);
        }
    }
    return $array;
}

function password($password)
{
    return md5(sha1($password) . 'yserp');
}

// 验证属性数据可选值
function check_require($value, $data)
{
    if ($data ['value_type'] == 2) {
        return true;
    } else {

        return false;
    }
}

function chk_date_password($time)
{
    /*if (time () > $time) {
        exception ( 'Not Found' );
    }*/
}

function init_file($file)
{
    $dir = $_SERVER ['DOCUMENT_ROOT'] . '/application/erp/' . $file . '/';
    $handler = opendir($dir);
    while (($file = readdir($handler)) !== false) {
        if ($file !== '.' && $file !== '..') {
            $temp ['name'] = $file;
            $temp ['date'] = date('YmdHis', filemtime($dir . $file));
            $files [] = $temp;
        }
    }
    return json_encode($files);
}

// 数组getField属性
function getField($data)
{
    $temp = array();
    foreach ($data as $key => $val) {
        foreach ($val as $k => $v) {
            array_push($temp, $v);
        }
    }
    return $temp;
}

function convertAmountToCn($amount)
{
    // 判断输出的金额是否为数字或数字字符串
    if (!is_numeric($amount)) {
        return "要转换的金额只能为数字!";
    }

    // 金额为0,则直接输出"零元整"
    if ($amount == 0) {
        return "人民币零元整";
    }

    // 金额不能为负数
    if ($amount < 0) {
        return "要转换的金额不能为负数!";
    }

    // 金额不能超过万亿,即12位
    if (strlen($amount) > 12) {
        return "要转换的金额不能为万亿及更高金额!";
    }
    $amount = number_format($amount, 2, '.', '');

    // 预定义中文转换的数组
    $digital = array(
        '零',
        '壹',
        '贰',
        '叁',
        '肆',
        '伍',
        '陆',
        '柒',
        '捌',
        '玖'
    );
    // 预定义单位转换的数组
    $position = array(
        '仟',
        '佰',
        '拾',
        '亿',
        '仟',
        '佰',
        '拾',
        '万',
        '仟',
        '佰',
        '拾',
        '元'
    );

    // 将金额的数值字符串拆分成数组
    $amountArr = explode('.', $amount);

    // 将整数位的数值字符串拆分成数组
    $integerArr = str_split($amountArr [0], 1);

    // 将整数部分替换成大写汉字
    $result = '人民币';
    $integerArrLength = count($integerArr); // 整数位数组的长度
    $positionLength = count($position); // 单位数组的长度
    $zeroCount = 0; // 连续为0数量
    for ($i = 0; $i < $integerArrLength; $i++) {
        // 如果数值不为0,则正常转换
        if ($integerArr [$i] != 0) {
            // 如果前面数字为0需要增加一个零
            if ($zeroCount >= 1) {
                $result .= $digital [0];
            }
            $result .= $digital [$integerArr [$i]] . $position [$positionLength - $integerArrLength + $i];
            $zeroCount = 0;
        } else {
            $zeroCount += 1;
            // 如果数值为0, 且单位是亿,万,元这三个的时候,则直接显示单位
            if (($positionLength - $integerArrLength + $i + 1) % 4 == 0) {
                $result = $result . $position [$positionLength - $integerArrLength + $i];
            }
        }
    }
    // 如果小数位也要转换
    if (isset ($amountArr [1]) && $amountArr [1] != '00') {
        // 将小数位的数值字符串拆分成数组
        $decimalArr = str_split($amountArr [1], 1);
        // 将角替换成大写汉字. 如果为0,则不替换
        if ($decimalArr [0] != 0) {
            $result = $result . $digital [$decimalArr [0]] . '角';
        }
        // 将分替换成大写汉字. 如果为0,则不替换
        if ($decimalArr [1] != 0) {
            $result = $result . $digital [$decimalArr [1]] . '分';
        }
    } else {
        $result = $result . '整';
    }
    return $result;
}

function changeExpress($val)
{
    switch ($val) {
        case 'ziji' :
            $express_name = '自配物流';
            break;
        case 'shangmen' :
            $express_name = '上门取货';
            break;
        case 'shunfeng' :
            $express_name = '顺丰速运';
            break;
        case 'shentong' :
            $express_name = '申通快递';
            break;
        case 'yuantong' :
            $express_name = '圆通速递';
            break;
        case 'yundakuaiyun' :
            $express_name = '韵达快运';
            break;
        case 'zhongtong' :
            $express_name = '中通快递';
            break;
        case 'ems' :
            $express_name = 'EMS';
            break;
        case 'jd' :
            $express_name = '京东物流';
            break;
        case 'baishikuaidi' :
            $express_name = '百世快递';
            break;
        case 'bsht' :
            $express_name = '百事亨通';
            break;
        case 'tiantian' :
            $express_name = '天天快递';
            break;
        case 'youzhengguonei' :
            $express_name = '邮政快递包裹';
            break;
        default :
            $express_name = $val;
            break;
    }
    return $express_name;
}

// 推送泰隆吉接口消息
function pushTljMsg($msg_type, $msg_param, $member_id)
{
    $memberdb = new \app\erp\model\Memberdb();
    $get_member = $memberdb->where('member_id', $member_id)->whereNotNull('token')->find();
    if ($get_member) {
        $tljmsgdb = new \app\erp\model\TljMsgdb();
        $tljmsgdb->save([
                'msg_type' => $msg_type,
                'msg_param' => json_encode($msg_param),
                'member_id' => $member_id
            ]
        );
    }
}